// 获取动态配置（在运行时获取环境变量）
function getLLMConfig() {
  const config = {
    // 支持的模型提供商
    providers: {
      openai: {
        apiKey: process.env.OPENAI_API_KEY || '',
        baseURL: process.env.OPENAI_BASE_URL || 'https://api.openai.com/v1',
        model: process.env.OPENAI_MODEL || 'gpt-4o-mini'
      },
      deepseek: {
        apiKey: process.env.DEEPSEEK_API_KEY || '',
        baseURL: process.env.DEEPSEEK_BASE_URL || 'https://api.deepseek.com/v1',
        model: process.env.DEEPSEEK_MODEL || 'deepseek-chat'
      },
      azure: {
        apiKey: process.env.AZURE_OPENAI_API_KEY || '',
        endpoint: process.env.AZURE_OPENAI_ENDPOINT || '',
        deploymentName: process.env.AZURE_OPENAI_DEPLOYMENT_NAME || '',
        apiVersion: process.env.AZURE_OPENAI_API_VERSION || '2024-02-15-preview'
      },
      xinference: {
        apiKey: process.env.XINFERENCE_API_KEY || '',
        baseURL: process.env.XINFERENCE_BASE_URL || 'http://localhost:9997/v1',
        model: process.env.XINFERENCE_MODEL || 'qwen2.5-coder-instruct'
      }
    },
    
    // 默认提供商
    defaultProvider: process.env.DEFAULT_LLM_PROVIDER || 'xinference',
    
    // API调用超时时间（毫秒）
    timeout: parseInt(process.env.LLM_TIMEOUT) || 600000,
    
    // 最大重试次数
    maxRetries: parseInt(process.env.LLM_MAX_RETRIES) || 3,
  
  // 页面分析提示词模板
   pageAnalysisPrompt: `你是一个专业的网页自动化助手，能够精确理解用户指令并分析网页DOM结构。请详细分析以下信息：

基本信息：
- 网页URL: {url}
- 网页标题: {title}
- 页面文本内容: {content}

用户指令: "{command}"

任务要求：
1. 仔细分析用户指令的意图（是查询信息、执行操作、还是获取帮助）
2. 如果是操作类指令，请分析DOM结构中的可交互元素
3. 制定详细的执行步骤，使用准确的CSS选择器
4. 评估操作的可行性和风险

分析范围包括：
- 任务管理系统操作（创建、查看、修改任务）
- 用户管理和权限操作
- 数据查询和图表分析
- 页面导航和表单操作
- 系统设置和配置
- 通知和消息处理

请严格按照以下JSON格式返回，确保JSON格式正确：
{
  "summary": "对用户指令的理解总结",
  "pageFunction": "当前页面的主要功能",
  "commandType": "指令类型：analysis（分析）, operation（操作）, navigation（导航）, query（查询）",
  "isExecutable": true/false,
  "interactiveElements": [
    {
      "type": "button/input/select/link/textarea",
      "selector": "精确的CSS选择器",
      "text": "元素显示文本",
      "description": "元素功能描述",
      "suggestedAction": "建议的操作类型"
    }
  ],
  "recommendedSteps": [
    {
      "step": 1,
      "action": "具体操作：点击/填写/选择/等待/导航",
      "selector": "CSS选择器",
      "value": "输入值或选择项",
      "description": "步骤说明"
    }
  ],
  "risks": ["潜在风险或注意事项"],
  "confidence": 0.0-1.0
}`,
  
   // 元素识别提示词模板
   elementRecognitionPrompt: `请识别网页中的以下元素：

页面标题: {title}
用户指令: {command}

请为以下操作提供准确的CSS选择器：
1. 登录表单的用户名输入框
2. 登录表单的密码输入框  
3. 登录按钮
4. 导航菜单
5. 主要操作按钮

返回JSON格式：
{
  "usernameInput": "选择器",
  "passwordInput": "选择器",
  "loginButton": "选择器",
  "navigationMenu": "选择器",
  "mainActionButton": "选择器"
}`
  };

  // 检查配置是否有效
  function validateLLMConfig(config) {
    const provider = config.providers[config.defaultProvider];
    
    if (!provider) {
      console.warn(`未找到默认大模型提供商: ${config.defaultProvider}`);
      return false;
    }
    
    // 对于xinference等本地模型，不需要API密钥
    if (config.defaultProvider !== 'xinference' && !provider.apiKey) {
      console.warn(`未设置 ${config.defaultProvider} API密钥`);
      return false;
    }
    
    return true;
  }

  return {
    ...config,
    currentProvider: config.defaultProvider,
    isValid: validateLLMConfig(config)
  };
}

module.exports = {
  getLLMConfig
};